package co.yixiang.retail.biz.order.service;

import co.yixiang.common.mproot.common.service.BaseService;
import co.yixiang.common.mproot.domain.PageResult;
import co.yixiang.retail.common.domain.YxStoreOrder;
import co.yixiang.retail.common.domain.YxStoreProduct;
import co.yixiang.retail.common.dto.*;
import org.springframework.data.domain.Pageable;

import java.math.BigDecimal;
import java.util.List;

public interface YxStoreOrderService extends BaseService<YxStoreOrder> {


    void add(List<YxStoreProduct> products);

    void updateRetailMoney(BigDecimal payPrice, Long uid,BigDecimal oldPrice);


    void updateRetailStock(Long id, Integer amount, Integer storeId);

    void updateCenterStock(Long id, Integer amount);

    BigDecimal queryNowMoney(Long uid);

    void sumitOrder(YxStoreOrder yxStoreOrder);


    void addLog(List<YxStoreProduct> products);

    //销货日志
    void addSalesLog(List<YxStoreProduct> products);

    /**
     * 查询数据分页
     * @param criteria 条件
     * @param pageable 分页参数
     * @return Map<String,Object>
     */
    PageResult<YxStoreOrderDto> queryAll(YxStoreOrderSalesQueryCriteria criteria, Pageable pageable);

    /**
     * 查询所有数据不分页
     * @param criteria 条件参数
     * @return List<YxStoreOrderDto>
     */
    List<YxStoreOrder> queryAll(YxStoreOrderSalesQueryCriteria criteria);


    /**
     * 查询所有数据不分页
     * @param criteria 条件参数
     * @return List<YsStoreOrderSalesDetailDto>
     */
    List<YsStoreOrderSalesDetailDto> queryAll(YxStoreOrderSalesDetailQueryCriteria criteria);

    /**
     * 销货订单发库
     * @param cmd
     */
    void shipments(YxStoreOrderShipmentsDto cmd);

    /**
     * 销货订单拒单
     * @param cmd
     */
    void refuseBill(YxStoreOrderShipmentsDto cmd);
}
